#!/usr/bin/env python
# -*-coding: utf-8 -*-
# Filename: detalle_de_la_clasificacion.py

##
# Módulos del sistema
# Parte gráfica
try:
    import pygtk
    pygtk.require("2.0")
    import gtk
    import gtk.glade
except ImportError, error:
    print error
    print "Necesitas la librería gráficas gtk+pygtk"
from datetime import datetime

##
# Módulos propios
try:
    from lib.database import Ticket
except ImportError, error:
    print error
    print "Error en detalle_de_la_clasificacion.py"

class DetalleDeLaClasificacion:
    def __init__(self, padre, clasificacion=None):
        self.gladefile = "gui/ghhp.glade"
        self.wTree = gtk.glade.XML(self.gladefile, "DetalleDeLaClasificacion")
        self.window = self.wTree.get_widget("DetalleDeLaClasificacion")
        self.un_dict = {"on_cancelbutton17_clicked": self.aceptar}
        self.wTree.signal_autoconnect(self.un_dict)
        self.nombre = self.wTree.get_widget("label709")
        self.abiertos_label = self.wTree.get_widget("label473")
        self.cerrados_label = self.wTree.get_widget("label474")
        self.abiertos=0
        self.cerrados=0
        # Armamos el TreeView
        self.tickets = self.wTree.get_widget("treeview22")
        self.add_find_column("Numero", 0)
        self.add_find_column("Legajo Usuario", 1)
        self.add_find_column("Apellido y Nombre", 2)
        self.add_find_column("Telefono interno", 3)
        self.add_find_column("Telefono externo", 4)
        self.add_find_column("Fecha derivacion", 5)
        self.add_find_column("Hora derivacion", 6)
        self.add_find_column("Estado", 7)
        self.lista_ticket = gtk.ListStore(str,str,str,str,str,str,str,str)
        self.tickets.set_model(self.lista_ticket)
        self.clasificacion = clasificacion
        self.completar_campos()
        self.window.resize(850, 500)

    def add_find_column(self, title, columnId):
        column = gtk.TreeViewColumn(title, gtk.CellRendererText(),
                text=columnId)
        column.set_resizable(True)
        column.set_sort_column_id(columnId)
        self.tickets.append_column(column)
    
    def aceptar(self, widget):
        self.window.destroy()

    def completar_campos(self):
        lista_ticket = self.buscar_ticket()
        print lista_ticket
        # Ponemos los valores en los widget
        self.abiertos_label.set_text(str(self.abiertos))
        self.cerrados_label.set_text(str(self.cerrados))
        self.nombre.set_text(self.clasificacion.nombre)

    def buscar_ticket(self):
        #Buscar todos los ticket que tengan esta clasificacion.
        lista_ticket = []
        tickets = Ticket.select()
        for ticket in tickets:
            #Formo la lista de clasificaciones
            lista_clasificaciones = []
            for he in ticket.historial_de_clasificacion:
                lista_clasificaciones.append(he.clasificacion)
            if self.clasificacion in lista_clasificaciones:
                lista_ticket.append(ticket)
                # Completamos la vista
                fecha = datetime.now()
                estado_intervencion = ''
                for he in ticket.historial_de_estado:
                    if he.estado.nombre == "Abierto derivado":
                        fecha = he.fecha
                        #estado_intervencion FIXME
                lista=[str(ticket.id),
                        ticket.usuario_creacion.empleado.legajo,
                        (ticket.usuario_creacion.empleado.apellido + " " +
                            ticket.usuario_creacion.empleado.nombre),
                        ticket.usuario_creacion.empleado.telefono_interno,
                        ticket.usuario_creacion.empleado.telefono_externo,
                        fecha.strftime("%d:%m:%Y"),
                        fecha.srtftime("%H:%M"),
                        'Ver']
                self.lista_ticket.append(lista)
       # Vemos cuantos abiertos y cerrados tenemos
        for ticket in lista_ticket:
            if ticket.cerrado:
                self.cerrados+=1
            else:
                self.abiertos+=1           
        return lista_ticket
